﻿/*
 * Created by SharpDevelop.
 * User: Zoila
 * Date: 03/11/2011
 * Time: 03:34 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using Business_Entity;
using System.Data.SqlClient;
using System.Data;
using Business_Entity;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOServicio.
	/// </summary>
	public class DAOServicio
	{
		public DAOServicio()
		{
		}
		public static int addServicio(BEServicio servicio){
			int nuevoCodigo =0;
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_NUEVO_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				cmd.Parameters.Add("@TIPOSERVICIO", SqlDbType.Int);
				cmd.Parameters["@TIPOSERVICIO"].Value = servicio.Tipo.Id;	
				cmd.Parameters.Add("@DESCRIPCION", SqlDbType.VarChar,50);
				cmd.Parameters["@DESCRIPCION"].Value =servicio.Descripcion;	
				cmd.Parameters.Add("@PRECIO", SqlDbType.Float);
				cmd.Parameters["@PRECIO"].Value = servicio.Precio;		
				cmd.Parameters.Add("@DURACION", SqlDbType.Int);
				cmd.Parameters["@DURACION"].Value = servicio.Duracion;	
				cmd.Parameters.Add("@detalle",SqlDbType.Text);
				cmd.Parameters["@detalle"].Value = servicio.Detalle;		
				cmd.Parameters.Add("@IMAGEN",SqlDbType.Int);
				cmd.Parameters["@IMAGEN"].Value = servicio.imagen;	
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
		
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			

				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						nuevoCodigo=Int32.Parse(reader[0].ToString());
						if (nuevoCodigo!=-1){
							servicio.Codigo=nuevoCodigo;
						}
						else {
							System.Windows.Forms.MessageBox.Show("Ya existe un servicio con el mismo nombre");
						}
						
					}
					reader.Close();
					return nuevoCodigo;
				}
				else
				{
					reader.Close();
					return 0;
					
				}
			}
			catch (Exception e)
			{
				System.Windows.Forms.MessageBox.Show("Error al guardar Servicio(s) - "+ e.Message,"Error");
				
				return 0;	
			}
			
		}
		
		public List<BEServicio> getServicioByTipo(int id){
			List<BEServicio> lista = new List<BEServicio>();
			object estadoTran;
			try
			{

				SqlCommand cmd = new SqlCommand("GGRR_BUSCA_SERVICIO_BY_TIPO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDTIPO", SqlDbType.Int);
				cmd.Parameters["@IDTIPO"].Value = id;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						
						try
						{
							/*S.idServicio,T.idTipoServicio, T.descripcion, s.descripcion,s.precio, s.duracionHoras,
			s.detalle, s.imagen*/
							
							BETipoServicio tipo= new BETipoServicio();
							tipo.Id=Int32.Parse(reader[1].ToString());
							tipo.Nombre=reader[2].ToString();
							BEServicio serv= new BEServicio();
							serv.Codigo=Int32.Parse(reader[0].ToString());
							serv.Tipo=tipo;
							serv.Descripcion=reader[3].ToString();
							serv.Precio=Int32.Parse(reader[4].ToString());
							serv.Duracion=Int32.Parse(reader[5].ToString());
							serv.Detalle=reader[6].ToString();
							serv.Imagen=Int32.Parse(reader[7].ToString());
							lista.Add(serv);
						}
						catch (Exception e)
						{
							
							reader.Close();
							return lista;						
						}
						
						
					}
					reader.Close();
					return lista;
				}
				else
				{
					reader.Close();
					return lista;
				}
			}
			catch ( Exception exc)
			{
				System.Windows.Forms.MessageBox.Show("Error al cargar servicios(s) - " ,"Error");
				
				return lista;	
			}
				 
				                    
		}
		
		public List<BETienda> getTiendaxServicio ( int idservicio){
			List<BETienda> lista = new List<BETienda>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCA_TIENDAXSERVICIO_BY_ID_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = idservicio;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						
						try
						{
							BETienda tienda= new BETienda();
							tienda.Id=Int32.Parse(reader[0].ToString());
        					tienda.Nombre=reader[1].ToString();
							lista.Add(tienda);
						}
						catch (Exception e)
						{
							
							reader.Close();
							return lista;						
						}
						
						
					}
					reader.Close();
					return lista;
				}
				else
				{
					reader.Close();
					return lista;
				}
			}
			catch ( Exception exc)
			{
				System.Windows.Forms.MessageBox.Show("Error al cargar tienda(s) - " ,"Error");
				
				return lista;	
			}
				 
			
		}
		public List<BEEmpleado> getEmpleadoxServicio ( int idservicio){
			List<BEEmpleado> lista = new List<BEEmpleado>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCA_EMPLEADOXSERVICIO_BY_ID_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = idservicio;
				
				
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						
						try
						{
															
							BEEmpleado emp= new BEEmpleado();
							
							emp.IdArea=Int32.Parse(reader[3].ToString());
							emp.Area=reader[4].ToString();
							emp.IdCargo=Int32.Parse(reader[5].ToString());
							emp.Cargo=reader[6].ToString();
							emp.IdEmpleado=Int32.Parse(reader[0].ToString());
							emp.Nombre=reader[1].ToString();
							emp.ApPaterno=reader[2].ToString();	
							lista.Add(emp);
						}
						catch (Exception e)
						{
							
							reader.Close();
							return lista;						
						}
						
						
					}
					reader.Close();
					return lista;
				}
				else
				{
					reader.Close();
					return lista;
				}
			}
			catch ( Exception exc)
			{
				System.Windows.Forms.MessageBox.Show("Error al cargar tienda(s) - " ,"Error");
				
				return lista;	
			}
				 
			
		}
		public List<BEInsumoServicio> getInsumoxServicio ( BEServicio servicio){
			List<BEInsumoServicio> lista = new List<BEInsumoServicio>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCA_INSUMOXSERVICIO_BY_ID_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = servicio.Codigo;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						
						try
						{
							BEProducto producto= new BEProducto();
							producto.Codigo=Int32.Parse(reader[0].ToString());
        					producto.Nombre=reader[1].ToString();
        					producto.Marca=reader[3].ToString();
        					BEInsumoServicio insumo= new BEInsumoServicio();
        					insumo.Producto=producto;
        					insumo.Servicio=servicio;
        					insumo.Cantidad=Int32.Parse(reader[2].ToString());
        				
							lista.Add(insumo);
						}
						catch (Exception e)
						{
							
							reader.Close();
							return lista;						
						}
						
						
					}
					reader.Close();
					return lista;
				}
				else
				{
					reader.Close();
					return lista;
				}
			}
			catch ( Exception exc)
			{
				System.Windows.Forms.MessageBox.Show("Error al cargar tienda(s) - " ,"Error");
				
				return lista;	
			}
				 
			
		}
		
            
		public static void updateServicio(BEServicio servicio){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_ACTUALIZA_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				cmd.Parameters.Add("@ID", SqlDbType.Int);
				cmd.Parameters["@ID"].Value = servicio.Codigo;
				cmd.Parameters.Add("@TIPOSERVICIO", SqlDbType.Int);
				cmd.Parameters["@TIPOSERVICIO"].Value = servicio.Tipo.Id;	
				cmd.Parameters.Add("@DESCRIPCION", SqlDbType.VarChar,50);
				cmd.Parameters["@DESCRIPCION"].Value =servicio.Descripcion;	
				cmd.Parameters.Add("@PRECIO", SqlDbType.Float);
				cmd.Parameters["@PRECIO"].Value = servicio.Precio;		
				cmd.Parameters.Add("@DURACION", SqlDbType.Int);
				cmd.Parameters["@DURACION"].Value = servicio.Duracion;	
				cmd.Parameters.Add("@detalle",SqlDbType.Text);
				cmd.Parameters["@detalle"].Value = servicio.Detalle;	
				cmd.Parameters.Add("@IMAGEN", SqlDbType.Int);
				cmd.Parameters["@IMAGEN"].Value = servicio.imagen;				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
		
				cmd.ExecuteNonQuery();//.ExecuteNonReader();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			}
			catch (Exception e ){
				System.Windows.Forms.MessageBox.Show("No se pudieron realizar los cambios () "+ e.Message);
			}
			
		}
		public static List<BETipoServicio> getAllTipoServicio(){
			List<BETipoServicio> lista = new List<BETipoServicio>();

			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCA_TIPO_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;			
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
				
				BETipoServicio serv=new BETipoServicio(-1,"<Seleccionar>");
				lista.Add(serv);

				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							BETipoServicio tServ=new BETipoServicio();
							tServ.Id=Int32.Parse(reader[0].ToString());
							tServ.Nombre=reader[1].ToString();
							lista.Add(tServ);
						}
						catch (Exception e)
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar detalleServicio(s) " + e.Message ,"Warning");
							reader.Close();
							return null;						
						}
					}
					reader.Close();
					return lista;
				}
				else
				{
					//reader.Close();
					/*List<BETipoServicio> lista2 = new List<BETipoServicio>();*/
					
					return lista;
					//return null;
				}
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al buscar Tipos de Servicios","Error");
				/*List<BETipoServicio> lista2 = new List<BETipoServicio>();*/
				return lista;	
			}

		
		}
		
		public void addTienda( BEServicio servicio,BETienda tienda){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_ADD_TIENDA_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				cmd.Parameters.Add("@IDTIENDA", SqlDbType.Int);
				cmd.Parameters["@IDTIENDA"].Value = tienda.Id;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value =servicio.Codigo;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
		
				cmd.ExecuteNonQuery();//.ExecuteNonReader();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			}
			catch (Exception e ){
				System.Windows.Forms.MessageBox.Show("No se pudieron realizar los cambios () "+ e.Message);
			}
		}
		public void deleteTienda( BETienda tienda,BEServicio servicio){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_DELETE_TIENDA_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				cmd.Parameters.Add("@IDTIENDA", SqlDbType.Int);
				cmd.Parameters["@IDTIENDA"].Value = tienda.Id;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value =servicio.Codigo;		
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
		
				cmd.ExecuteNonQuery();//.ExecuteNonReader();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			}
			catch (Exception e ){
				System.Windows.Forms.MessageBox.Show("No se pudieron realizar los cambios () "+ e.Message);
			}
		}
		public void deleteEmpleado( BEEmpleado empleado,BEServicio servicio){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_DELETE_EMPLEADO_SERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value =servicio.Codigo;		
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
		
				cmd.ExecuteNonQuery();//.ExecuteNonReader();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			}
			catch (Exception e ){
				System.Windows.Forms.MessageBox.Show("No se pudieron realizar los cambios () "+ e.Message);
			}
		}
		
		
		public List<BEServicio> buscarListaServicios()
		{		
			object estadoTran;
			List<BEServicio> lista = new List<BEServicio>();
			SqlDataReader amd = null;
			
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCARTOTAL_SERVICIOS_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
							
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;					
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;														
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
						BEServicio servicio = new BEServicio();
						servicio.Codigo = int.Parse(amd[0].ToString());
						BETipoServicio beTipoServicio = new BETipoServicio();
						beTipoServicio.Id = int.Parse(amd[8].ToString());
						beTipoServicio.Nombre = amd[9].ToString();
						servicio.Tipo = beTipoServicio;
						servicio.Descripcion = amd[2].ToString();
						servicio.Precio = int.Parse(amd[3].ToString());
						servicio.Duracion = int.Parse(amd[4].ToString());
						servicio.Detalle = amd[5].ToString();
						if(amd[6].ToString().Equals("A")){
							servicio.Estado = true;
						}else{
							servicio.Estado = false;
						}
						servicio.Imagen=int.Parse(amd[7].ToString());
																
						lista.Add(servicio);						
					}					
				}
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}
			
			if(amd != null)
				amd.Close();			
			return lista;
		}
		
		public List<BEServicio> buscarListaServicios(BEServicio beServicio)
		{
			object estadoTran;			
			SqlDataReader amd = null;										
			List<BEServicio> lista = new List<BEServicio>();
			
			//System.Windows.Forms.MessageBox.Show("busqueda parcial");
			
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_BUSCAR_SERVICIOS_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.VarChar,10);
				if(beServicio.Codigo == -1)
					cmd.Parameters["@IDSERVICIO"].Value = "";
				else
					cmd.Parameters["@IDSERVICIO"].Value = beServicio.Codigo.ToString();
				
				cmd.Parameters.Add("@DESCRIPCION", SqlDbType.VarChar,50);
				cmd.Parameters["@DESCRIPCION"].Value = beServicio.Descripcion;
				
				cmd.Parameters.Add("@IDTIPOSERVICIO", SqlDbType.VarChar,2);
				if(beServicio.Tipo.Id == -1)
					cmd.Parameters["@IDTIPOSERVICIO"].Value = "";
				else
					cmd.Parameters["@IDTIPOSERVICIO"].Value = beServicio.Tipo.Id.ToString();
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;							
				
				amd = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;																
					
				if (amd.HasRows) 
				{
					while(amd.Read())
					{						
							BEServicio servicio = new BEServicio();
							servicio.Codigo = int.Parse(amd[0].ToString());
							BETipoServicio beTipoServicio = new BETipoServicio();
							beTipoServicio.Id = int.Parse(amd[8].ToString());
							beTipoServicio.Nombre = amd[9].ToString();
							servicio.Tipo = beTipoServicio;
							servicio.Descripcion = amd[2].ToString();
							servicio.Precio = int.Parse(amd[3].ToString());
							servicio.Duracion = int.Parse(amd[4].ToString());
							servicio.Detalle = amd[5].ToString();
							if(amd[6].ToString().Equals("A")){
								servicio.Estado = true;
							}else{
								servicio.Estado = false;
							}
							servicio.Imagen=int.Parse(amd[7].ToString());										
							lista.Add(servicio);						
					}					
				}								
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");				
			}	
			
			if(amd != null)
				amd.Close();			
			return lista;
		}
		public bool esEliminable(BEServicio servicio){
			bool rpta =false;
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("GGRR_SERVICIO_ES_ELIMINABLE_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = servicio.Codigo;
							
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
				int i = -1;	
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							i= int.Parse(reader[0].ToString());
							
						}
						catch
						{
							//System.Windows.Forms.MessageBox.Show("Error al buscar empleado(s)","Error");
							reader.Close();
							return false;						
						}
					}
					reader.Close();
					return (i==0);
				}
				else
				{
					reader.Close();
					return false;
				}
			}
			catch
			{
				//PetSoft.GUI.Utils.MessageError("Error en sacar los permisos de cajero");
				return false;
			}

		}
		public int eliminarServicio(BEServicio beServicio)
		{
			int estadoTran = 0;
			
			try 
			{
				SqlCommand cmd = new SqlCommand("GGRR_ELIMINAR_SERVICIO_R", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = beServicio.Codigo;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;
		}
		
		public int agregarEmpleadoServicio(BEEmpleado empleado, BEServicio servicio)
		{
			int estadoTran = 0;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("SERVICIOS_INSERTAR_EMPLEADOXSERVICIO_L", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = servicio.Codigo;
								
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;	
		}
		public int agregarProductoServicio(BEInsumoServicio insumo)
		{
			int estadoTran = 0;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("SERVICIOS_INSERTAR_PRODUCTOXSERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@IDPRODUCTO", SqlDbType.Int);
				cmd.Parameters["@IDPRODUCTO"].Value = insumo.Producto.Codigo;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = insumo.Servicio.Codigo;
								
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;	
		}
		
        
        
        
        
        
        
        
        
        public int updateProductoServicio(BEInsumoServicio insumo)
		{
			int estadoTran = 0;
			
			try {								
				
				SqlCommand cmd = new SqlCommand("SERVICIOS_UPDATE_PRODUCTOXSERVICIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;							
				
				//INFOR PERSONAL				
				cmd.Parameters.Add("@IDPRODUCTO", SqlDbType.Int);
				cmd.Parameters["@IDPRODUCTO"].Value = insumo.Producto.Codigo;
				
				cmd.Parameters.Add("@IDSERVICIO", SqlDbType.Int);
				cmd.Parameters["@IDSERVICIO"].Value = insumo.Servicio.Codigo;
				
				
				cmd.Parameters.Add("@CANTIDAD", SqlDbType.Int);
				cmd.Parameters["@CANTIDAD"].Value = insumo.Cantidad;
								
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				cmd.ExecuteNonQuery();			
				
				estadoTran = (int) cmd.Parameters["@ESTADOTRAN"].Value;		
				//ConnectionManager.closeConnection();
			}
			catch(SqlException e)
			{				
				System.Windows.Forms.MessageBox.Show(e.ToString(),"Error");
			}
			
			return estadoTran;	
		}







        public void descargarArchivoLineaServicio(BELineaPedidoServicio lineaPedidoServicioBE,ref string nomArch,ref byte[] arch, ref  int error, ref  string mensajeError)
        {
            try
            {
                SqlCommand comando = new SqlCommand("select archivo, nomArchivo  from LINEAPEDIDOVENTASERVICIO  where idLineaPedidoVentaServicio= " + lineaPedidoServicioBE.Id, ConnectionManager.getConnection());
                SqlDataReader lineaPedVentServRDR = comando.ExecuteReader();
                if (lineaPedVentServRDR.HasRows)
                {
                    lineaPedVentServRDR.Read();
                    if (lineaPedVentServRDR["archivo"] != DBNull.Value)
                    {
                        nomArch = Convert.ToString(lineaPedVentServRDR["nomArchivo"]);
                        arch = (byte[])lineaPedVentServRDR["archivo"];
                    }
                    else
                    {
                        error = 2;
                        mensajeError = "No existe un archivo adjunto a la lineaServicio que descargar.";
                    }
                    lineaPedVentServRDR.Close();
                }
            }
            catch (Exception e)
            {
                error = 1;
                mensajeError = e.Message;
            }
        }
	}
}
